iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

延續上一天慾望的源頭管理,今天想談價值與選擇,從小到大我們都會被給很多標準答案:

  • 人生就要斷捨離?
  • 有重複的程式碼是程式碼的壞味道?
  • 不愛讀書就是壞小孩

同樣的一件事情你可以有很多不同種的解釋,甚至很多上一輩在教育上會有自己堅持的看法,大絕招大概就是十年後你就知道了。

人們有不同的觀點和價值觀,因此對於事物的評價是主觀的是相對於其他事物而言的,從這個角度來看「不好」可能只是一個個人或群體的觀點,只是取決於它在特定情境下的對比,不一定代表客觀事實。

別人說不好不一定代表真的不好

評價程式碼或程式架構也是一個主觀的過程,受到個人觀點、經驗和期望的影響,一個人的不好也可能是另一個人的好。

延續之前的例子來繼續談,回顧一下專案假設今天總共用五個階段五個角色,每個角色在不同階段需要填的欄位並不相同,可以想像一個班級有不同的幹部,而班級學期報告需要大家按照各自的職掌在不同階段逐漸把內容完善。

  1. 以管理面來說

    • 把不同階段不同角色的元件拆開,一開始我們被要求做出五個腳色要用的刀子,以刀子來說就是刀加上刀柄,但隨著時間過去不同的角色會有不同的需求,漸漸的演化成美工刀、水果刀、菜刀等等,這就是把元件拆開的作法。當需要改相同且類似的部分就會面臨到一次要改很多地方的命運,這種修改方式也被稱做散彈槍式的修改 (Shotgun Surgery)
    • 把物件合併集中,當相同類型物件集中之後,會漸漸演化集多功能於一身的瑞士刀,這時候又會出現另外一個問題叫 Divergent Change (發散式修改) 因為你會在一個元件上長出各種奇形怪狀的東西,漸漸的變成上帝等級的全能物件 (God object)
  2. 以組織和分類來說

    • Cohesion (內聚): 簡單來說就是把全部相關的東西能放一起就放一起叫做內聚,但不知道怎麼分類的東西全部放在桶子裡就會叫垃圾桶
    • Coupling (耦合): 出門前你需要分別從內衣褲抽屜、衣櫃、鞋櫃分別找到需要的穿搭單品才可以出門,這就叫做耦合

把元件合在一起的時候好處是集中管理,需求更動屬於共用的地方改一次就好了,壞處是有可能因為這個修改就改壞大家共用的地方,也可能因次讓共用的地方越長越大。

把元件依照責任分開,好處是當需求越來越牛鬼蛇神,越來越「在地化」,A 說希望 1 2 3 4 5,B 說 6 7 8 9 10,這時候分開就展現出了好處,就跟兩個不同的國家一樣分開治理分開發展,即使剛開始同文同種,後來也演變成完全不同的樣貌。那壞處大概是有共用的地方就需要改好幾個,造成 Shotgun Surgery。

好與壞是一體兩面的東西,重要的是要在多個角度和標準下評價,並盡量尋求多方反饋。有時候,負面評價可能提供了改進的機會,但也可能只是基於誤解或主觀情感。

最終,我們應該尊重不同的觀點,並根據客觀標準來評價程式碼的品質,最好的程式碼評價是建立在事實和證據之上,而不僅僅是基於主觀感受。

人生沒有好與壞,只是不一樣


上一篇
大家都說需要的源頭管理
下一篇
想要與需要,選擇的智慧
系列文
前端三分鐘 X 每天三分鐘的斷捨離,讓每一天都可以早點下班30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
MaxHarry
iT邦新手 4 級 ‧ 2023-09-22 18:03:20

六點起來 po 文
先給讚

老人生活正常發揮嗎?XD

我要留言

立即登入留言